package com.atguigu.principle.inversion.improve;

public class DependencyInversion {

	public static void main(String[] args) {
		//客户端无需改变
		Person person = new Person();
		person.receive(new Email());
		person.receive(new WeiXin());
	}

}

//定义接口
interface IReceiver{
	String getInfo();
}

class Email implements IReceiver{
	
	@Override
	public String getInfo() {
		return "电子邮件信息：hello，world！";
	}
}

//增加微信
class WeiXin implements IReceiver{

	@Override
	public String getInfo() {
		return "微信信息：hello，ok！";
	}
	
}

//方式2
class Person{
	//这里我们是对接口的依赖
	//记录个人理解--对接口的依赖怎么就依赖倒转了
	//原因：对类直接依赖，这样写的代码就控制死了客户端的使用，依赖什么都是由服务端说的算。
	//		对接口依赖，这样服务端只提交规范，具体依赖什么由客户端说的算，客户端就可以灵活选择依赖。
	public void receive(IReceiver receiver) {
		System.out.println(receiver.getInfo());
	}
}